#pragma once

//#include <srs_app_reload.hpp>
#include <srs_core.hpp>

#include <string>

/**
* the handler for config reload.
* when reload callback, the config is updated yet.
*
* features not support reload
*/
class ISrsReloadHandler {
public:
    ISrsReloadHandler();
    virtual ~ISrsReloadHandler();
public:
    virtual int on_reload_utc_time();
    virtual int on_reload_max_conns();
    virtual int on_reload_listen();
    virtual int on_reload_pid();
    virtual int on_reload_log_tank();
    virtual int on_reload_log_level();
    virtual int on_reload_log_file();
    virtual int on_reload_pithy_print();
    virtual int on_reload_http_api_enabled();
    virtual int on_reload_http_api_disabled();
    virtual int on_reload_http_stream_enabled();
    virtual int on_reload_http_stream_disabled();
    virtual int on_reload_http_stream_updated();
public:
    // TODO: FIXME: should rename to http_static
    virtual int on_reload_vhost_http_updated();
    virtual int on_reload_vhost_http_remux_updated(const std::string& vhost);
    virtual int on_reload_vhost_added(const std::string& vhost);
    virtual int on_reload_vhost_removed(const std::string& vhost);
    virtual int on_reload_vhost_atc(const std::string& vhost);
    virtual int on_reload_vhost_gop_cache(const std::string& vhost);
    virtual int on_reload_vhost_queue_length(const std::string& vhost);
    virtual int on_reload_vhost_time_jitter(const std::string& vhost);
    virtual int on_reload_vhost_mix_correct(const std::string& vhost);
    virtual int on_reload_vhost_forward(const std::string& vhost);
    virtual int on_reload_vhost_hls(const std::string& vhost);
    virtual int on_reload_vhost_hds(const std::string& vhost);
    virtual int on_reload_vhost_dvr(const std::string& vhost);
    virtual int on_reload_vhost_mr(const std::string& vhost);
    virtual int on_reload_vhost_mw(const std::string& vhost);
    virtual int on_reload_vhost_smi(const std::string& vhost);
    virtual int on_reload_vhost_tcp_nodelay(const std::string& vhost);
    virtual int on_reload_vhost_realtime(const std::string& vhost);
    virtual int on_reload_vhost_p1stpt(const std::string& vhost);
    virtual int on_reload_vhost_pnt(const std::string& vhost);
    virtual int on_reload_vhost_chunk_size(const std::string& vhost);
    virtual int on_reload_vhost_transcode(const std::string& vhost);
    virtual int on_reload_ingest_removed(const std::string& vhost, const std::string& ingest_id);
    virtual int on_reload_ingest_added(const std::string& vhost, const std::string& ingest_id);
    virtual int on_reload_ingest_updated(const std::string& vhost, const std::string& ingest_id);
    virtual int on_reload_user_info();
};
